Computer systems such as a typical desktop personal computer (PC) or workstation generally use a frame buffer to store image data for each picture element on a display monitor such as a cathode ray tube (CRT) or Liquid Crystal Display (LCD). Each picture element on the monitor's screen has a corresponding instance of image data commonly referred to as a "pixel." To convert the image data into an image visible on the screen, a display controller periodically reads the pixels in the frame buffer (usually around 60-75 times per second) and converts them into signals used to energize the picture elements on the screen.
To change the display image, the host processor of the computer modifies the pixels in the frame buffer. For instance, in conventional PC architectures, the computer issues read and write requests to a linear address space assigned to the frame buffer to read pixels and write new pixels into the frame buffer. In most computers, the operating system includes a software interface to the display hardware. Software executing in the computer can invoke functions in this interface to modify the display image. The software interface, in turn, communicates with the display hardware. For example, a program may invoke a bit block transfer function in the software interface to copy a new block of pixels to the frame buffer. The software interface translates this request into write requests to modify the contents of the frame buffer.
For the past several years, there has been a growing trend to make graphical displays more user friendly and realistic, and there is an increasing demand for applications with more compelling graphics and visual effects. To meet these demands, display hardware and software have to support higher resolution displays and a wider variety of colors. Unfortunately, high resolution color images require a great deal of memory and memory bandwidth, which increases the cost of the computer system.
One common way to support color displays with less memory is to use a color table or palette. A color table is an array of colors, where each color is typically represented by a Red, Green and Blue component. Each of these components is customarily represented by an 8 bit number. Rather than storing 24 bits for each pixel, each pixel represents an index into the color table. The display controller looks up the color value for each pixel as it generates the display's control signals. The color table, therefore, allows the computer to support a reasonable variety of colors while reducing the amount of memory to implement a frame buffer.
The color table approach reduces memory requirements, but is inherently limited because the table only provides a limited number of colors to choose from. An 8 bit index can only support 256 colors. While reducing the number of bits per pixel saves memory, it tends to decrease image quality.
Higher resolution workstations are capable of displaying from 1 to 2 million pixels for 24 bit per pixel (bpp) formats. These systems can achieve higher fidelity images because each pixel has 8 bits each for RGB components. These systems are expensive, however, because they typically use a frame buffer with enough memory to store a high resolution display image in 24 bpp format.
The use of a conventional frame buffer to store data for each picture element on the display screen is a major limitation of existing systems because it requires a great deal of memory. One solution is to use a different architecture which does not require a conventional frame buffer. However, it is difficult to change architectures because most of the operating systems and graphics support software is designed to interface with a conventional frame buffer that has a linear address space. New architectures can render current operating system and graphic support software obsolete.
There is a need, therefore, for improved display hardware and software that provides high quality images without increasing memory requirements and causing widespread compatibility problems.